package com.itheima.d10_api_object;
/*
    了解内容!
    1 Object类提供的对象克隆方法
        protected Object clone()	对象克隆
        作用 : 当某个对象调用这个方法时，这个方法会复制一个一模一样的新对象返回。

    2 克隆分类
        浅克隆 :
            1) 拷贝出的新对象，与原对象中的数据一模一样（引用类型拷贝的只是地址）
        深克隆 :
            1) 对象中基本类型的数据直接拷贝。
            2) 对象中的字符串数据拷贝的还是地址。
            3) 对象中还包含的其他对象，不会拷贝地址，会创建新对象。
    3 注意事项
        1) clone方法权限为protected , 不同包只能有子父类关系才能访问
        2) 某一个类的对象如果需要被克隆,那么此类需要实现Cloneable接口
 */
public class Test2 {
    public static void main(String[] args) throws CloneNotSupportedException {
        // 目标：掌握Object类提供的对象克隆的方法。
        // 1、protected Object clone()：对象克隆。

        User u1 = new User(1, "zhangsan", "wo666",new double[]{99.0, 99.5});
        System.out.println(u1.getId());
        System.out.println(u1.getUsername());
        System.out.println(u1.getPassword());
        System.out.println(u1.getScores());
        System.out.println(u1);

        User clone = (User)u1.clone();
        System.out.println(clone);
        System.out.println(clone.getId());
        System.out.println(clone.getUsername());
        System.out.println(clone.getPassword());
        System.out.println(clone.getScores());

    }
}
